package com.leemz.algorithm.bubble;

import java.util.Arrays;

/**
 * Created by leemz on 2017/4/25.
 * 冒泡排序
 */
public class BubbleSortTest {
    public static void main(String[] args) {
        int[] numbers = {54,3,12,42,13,23,45,53,1,2,8,98,87};
        bubbleSort(numbers);
        System.out.println(Arrays.toString(numbers));
    }

    /**
     * 要排序的数组,每次将相邻的两个元素进行比较
     * @param numbers
     */
    public static void bubbleSort(int[] numbers) {
        int temp;//临时变量,存储要交换的值
        int size = numbers.length;
        for(int i = 0; i < size - 1; i ++) {
            for(int j = 0; j < size - 1 - i; j ++) {
                /**
                 * 比较相邻元素,如果前一个大于后一个,则交换位置
                 */
                if(numbers[j] > numbers[j + 1]){
                    swap(numbers, j, j + 1);
                }
            }
        }
    }

    /**
     * 交换元素位置
     * @param numbers
     * @param firstIndex
     * @param secondIndex
     */
    public static void swap(int[] numbers, int firstIndex, int secondIndex) {
        //临时变量存储第一个元素的值
        int temp = numbers[firstIndex];
        //将第一个元素的值设置为下一个元素的值
        numbers[firstIndex] = numbers[secondIndex];
        //将第二个元素的值设置为临时变量保存的第一个元素的值
        numbers[secondIndex] = temp;
    }
}
